/*
 * Equipment.h
 *
 *  Created on: Jan 21, 2013
 *      Author: quanpv
 */

#ifndef EQUIPMENT_H_
#define EQUIPMENT_H_

#include <boost/shared_ptr.hpp>
#include "Iterator.h"

typedef double Watt;
typedef int Currency;

class Equipment {
public:
	virtual ~Equipment();

	boost::shared_ptr<const char> Name() {
		return _name;
	}

	virtual Watt Power();
	virtual Currency NetPrice();
	virtual Currency DiscountPrice();

	virtual void Add(boost::shared_ptr<Equipment>);
	virtual void Remove(boost::shared_ptr<Equipment>);
	virtual boost::shared_ptr<Iterator> CreateIterator();

protected:
	Equipment(boost::shared_ptr<const char>);

private:
	boost::shared_ptr<const char> _name;
};

#endif /* EQUIPMENT_H_ */
